func maxProfit(prices []int) int {
    minP := math.MaxInt
    res := 0
    for i:=0; i<len(prices); i++ {
        minP = min(prices[i], minP)
        res = max(res, prices[i] - minP)
    }
    return res
}

func min(a, b int) int {
    if a > b {
        return b
    }
    return a
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}